// subHoliday/addHoliday/add_holiday.js
import {
  myChange,
  data_time,
  formatter,
  holiday_type,
  leaving_school
} from "../../utils/util"
import {differenceInHours,formatTime,dateToTimestamp} from "../../utils/date_formatter"
import Dialog from '@vant/weapp/dialog/dialog';
const appg = getApp().globalData
Page({

  /**
   * 页面的初始数据
   */
  data: {
    form: {
      value: null,
      holiday_type: null,
      leaving_school: null,
      start_time: null,
      end_time: null,
      tea_approve: null,
      tea_approve_ID:null,
      counsellor: null,
      counsellor_ID:null,
      phone: null,
      duration: null,
    },
    data_time,
    formatter,
    current: '', //用来标记当前操作的是谁
    show_type:false,//控制请假类型 是否离校类型的popup
    show_approve:false,//控制审批人的
    currentDate: null,
    options: [],
    approveOptions:[],//存储后端返回来的审批人
    loading:false,
    error_phone:null,//电话号码格式不对
  },
  onChange: myChange(),
  // 存储操作对象打开popup
  onClick_dateTime(e) {
    let field = 'form.' + e.currentTarget.dataset.field;
    this.setData({
      current: field,
      'data_time.show_data': !this.data.data_time.show_data,
      currentDate:dateToTimestamp(this.data.form[e.currentTarget.dataset.field]==null?new Date():this.data.form[e.currentTarget.dataset.field])
    })
  },
  // 关闭时间popup
  onClose_dateTime() {
    this.setData({
      'data_time.show_data': !this.data.data_time.show_data
    })
  },
  // 关闭请假跟是否离校popup
  onClose_type(){
    this.setData({
      'show_type': !this.data.show_type
    })
  },
  // 确认选中 时间
  onConfirm_date(e) {
    let value = e.detail
    console.log(e, value);
    const format = 'YYYY-MM-DD HH:mm';
    // 转化时间格式
    value = formatTime(value,format)
    this.setData({
      [this.data.current]: value,
      currentDate: null
    });
    // 检查 开始时间 跟结束时间是否都存在 存在就计算时长
    if (this.data.form.start_time!==null && this.data.form.end_time!==null) {
      let duration = differenceInHours(this.data.form.end_time,this.data.form.start_time)
      console.log('时长',duration);
      this.setData({
        'form.duration':duration
      })
    }
    this.onClose_dateTime();
  },
  // 类型
  onConfirm_type(e) {
    let {value,index} = e.detail
    console.log(e, value);
    // 转化时间格式
    this.setData({
      [this.data.current]: value,
      currentDate: null
    });
    this.onClose_type();
  },
  //打开 请假类型  是否离校
  onClick_type(e){
    let type = 'form.' + e.currentTarget.dataset.type;
    let options = [];

    if (e.currentTarget.dataset.type === 'holiday_type') {
      options = holiday_type;
    } else if (e.currentTarget.dataset.type === 'leaving_school') {
      options = leaving_school;
    }
    this.setData({
      current: type,
      'show_type': !this.data.show_type,
      options:options
    });

  },
  // 打开审批人popup
  async onClick(e){
    let type = 'form.' + e.currentTarget.dataset.type;
    let options = [];
    this.setData({
      loading:true,
      show_approve:true
    })
    if (e.currentTarget.dataset.type=="tea_approve") {
      try {
        const json = await getApp().$axios("/getTeacherList","GET")
        if (json.status!==200) {
          wx.showToast({
            title: json.data,
            icon:'error'
          })
          return
        }
        // 处理数据
        json.data.forEach(element => {
          options.push(element.username)
        });
        this.setData({
          approveOptions:json.data,
          options,
          current: type,
          loading:false
        })
      } catch (error) {
        wx.showToast({
          title: error.msg,
          icon:'error'
        })
      }
    }else if (e.currentTarget.dataset.type=="counsellor") {
      try {
        const json = await getApp().$axios("/getCounselorList","GET")
        if (json.status!==200) {
          wx.showToast({
            title: json.data,
            icon:'error'
          })
          return
        }
        // 处理数据
        json.data.forEach(element => {
          options.push(element.username)
        });
        this.setData({
          approveOptions:json.data,
          options,
          current: type,
          loading:false
        })
      } catch (error) {
        wx.showToast({
          title: error.msg,
          icon:'error'
        })
      }
    }
  },
  // 确认选中审批人
  onConfirm_approve(e){
    let {value,index} = e.detail;
    this.setData({
      [this.data.current]: value,
      [[this.data.current]+'_ID']:this.data.approveOptions[index].id
    })
    this.onClose_approve()
  },
  // 关闭弹出窗
  onClose_approve(){
    this.setData({
      'show_approve': !this.data.show_approve
    })
  },
  // 发起请假
  async initiate(){
    const reg = /^1[3-9]\d{9}$/
    if (reg.test(this.data.form.phone)) {
      this.setData({
        error_phone:null
      })
      const params = {
        uid:appg.userInfo.id,
        type:this.data.form.holiday_type=="课假"?0:this.data.form.holiday_type=="病假"?1:2,
        title:this.data.form.value,
        leave_school:this.data.form.leaving_school=="否"?0:1,
        start_time:this.data.form.start_time,
        end_time:this.data.form.end_time,
        tea_approve_ID:this.data.form.tea_approve_ID,
        counsellor:this.data.form.counsellor_ID,
        phone:this.data.form.phone,
        duration:this.data.form.duration,
        school_ID:appg.userInfo.school_ID
      }
      const json  = await getApp().$axios("/addLeaveSever","POST",params)
      if (json.status!==200) {
        wx.showToast({
          title: json.data||json.data.msg,
          icon:'none'
        })
        return
      }
      Dialog.alert({
        title: '成功',
        message: json.data,
        theme: 'round-button',
      }).then(() => {
        // on close
        wx.navigateBack({
          delta:1
        })
      });

    }else{
      this.setData({
        error_phone:'你输入的电话号码格式不正确！'
      })
    }
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})